"""
@version:python3
@author:大橘为重
@file:20-QDoubleSpinBox-功能测试.py
@time:2022/3/22 19:49
"""
# 0、导入需要的包和模块
from PyQt5.Qt import *
import sys

class MyDSB(QDoubleSpinBox): # 自定义数据展示的格式
    def textFromValue(self, p_float):
        return str(p_float) + "*" + str(p_float)

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QDoubleSpinBox")
        self.resize(500, 500)
        self.setup_ui()
    def setup_ui(self): # 添加子控件以及子控件的配置操作
        # pass
        # dsb = QDoubleSpinBox(self) # 默认范围 0.00-99.99
        dsb = MyDSB(self) # 默认范围 0.00-99.99
        dsb.move(100,100)
        dsb.resize(150,30)
        dsb.setMaximum(88.88) # 设置最大值范围
        dsb.setMinimum(5.22) # 设置最小值范围
        dsb.setSingleStep(0.5) # 设置单步步长
        dsb.setWrapping(True) # 设置是否开启数值循环
        dsb.setPrefix("%")
        dsb.setSuffix("**") # 设置前后缀
        dsb.setSpecialValueText("文本") # 设置最小值对应的特殊文本
        dsb.setDecimals(1) # 设置小数位数

        dsb.value() # 返回浮点型数据
        dsb.cleanText() # 返回str文本，不包含前后缀。如果需要前后缀可直接使用text()方法
        # dsb.valueChanged.connect(lambda val:print(val)) # 返回float
        dsb.valueChanged[str].connect(lambda val:print(val)) # 返回str


# 1、创建一个应用程序对象
app = QApplication(sys.argv)

# 2、控件操作
# 创建控件、设置控件、事件和信号的处理
# 2.1 创建控件
window = Window()
# 2.2 设置控件


# 2.3 展示控件
window.show()

# 3、应用程序的执行，进入到消息循环
sys.exit(app.exec_())